// Mock数据服务，用于前端开发和演示
class MockAssessmentService {
  constructor() {
    this.conversations = new Map();
    this.questions = [
      '你对哪些行业或职业方向特别感兴趣？',
      '你了解这些行业的发展趋势和未来前景吗？',
      '你认为自己的专业知识和技能适合哪些职业岗位？',
      '你在专业学习中取得过哪些突出的成绩？',
      '你是否参与过与专业相关的项目或实践活动？',
      '你如何评价自己对专业核心知识的掌握程度？',
      '请描述一次你团队合作完成任务的经历。',
      '你通常如何处理工作或学习中的压力和挑战？',
      '你如何安排和管理自己的时间？',
      '你是否已经准备好了个人简历？如何突出自己的优势？',
      '你对面试过程有哪些了解？做过哪些准备？',
      '你通常通过哪些渠道获取招聘信息？'
    ];
  }

  // 获取或创建对话
  getOrCreateConversation(conversationId) {
    if (!this.conversations.has(conversationId)) {
      this.conversations.set(conversationId, {
        messages: [],
        currentQuestionIndex: 0,
        isCompleted: false
      });
    }
    return this.conversations.get(conversationId);
  }

  // 处理评估请求
  async handleAssessment(message, conversationId) {
    const conversation = this.getOrCreateConversation(conversationId);
    
    // 添加用户消息
    conversation.messages.push({ type: 'user', content: message });
    
    // 如果是第一次消息，返回第一个问题
    if (conversation.messages.length === 1) {
      const firstQuestion = this.questions[0];
      conversation.messages.push({ type: 'ai', content: firstQuestion });
      conversation.currentQuestionIndex = 1;
      
      return {
        response: firstQuestion,
        isReport: false,
        questionCount: 1
      };
    }
    
    // 如果还有问题，返回下一个问题
    if (conversation.currentQuestionIndex < this.questions.length) {
      const nextQuestion = this.questions[conversation.currentQuestionIndex];
      conversation.messages.push({ type: 'ai', content: nextQuestion });
      conversation.currentQuestionIndex++;
      
      return {
        response: nextQuestion,
        isReport: false,
        questionCount: conversation.currentQuestionIndex
      };
    }
    
    // 如果所有问题都问完了，生成报告
    if (!conversation.isCompleted) {
      conversation.isCompleted = true;
      const report = this.generateMockReport();
      conversation.messages.push({ type: 'ai', content: report });
      
      return {
        response: report,
        isReport: true,
        questionCount: this.questions.length
      };
    }
  }

  // 获取对话历史
  async getConversationHistory(conversationId) {
    const conversation = this.conversations.get(conversationId);
    if (!conversation) return null;
    
    return {
      messages: conversation.messages,
      questionCount: conversation.currentQuestionIndex,
      isAssessmentCompleted: conversation.isCompleted,
      report: conversation.isCompleted ? conversation.messages[conversation.messages.length - 1].content : null
    };
  }

  // 获取评分等级
  getRating(score) {
    if (score >= 90) return '优秀';
    if (score >= 80) return '良好';
    if (score >= 70) return '中等';
    if (score >= 60) return '及格';
    return '需提升';
  }
  
  // 生成模拟反馈
  generateMockFeedback(dimension) {
    const feedbacks = {
      '职业认知': '您对自身的职业定位有较为清晰的认识，了解多个行业的基本情况。',
      '专业能力': '您掌握了专业的基础知识，有一定的实践经验。',
      '通用技能': '您具备良好的团队协作和沟通能力。',
      '求职准备': '您已经开始准备求职材料，但准备不够充分。',
      '职业素养': '您展现出良好的职业素养和工作态度。',
      '心理准备': '您对职场有一定的心理准备，但仍需加强。'
    };
    return feedbacks[dimension] || '评估反馈待定。';
  }
  
  // 生成模拟报告
  generateMockReport() {
    // 设置评估维度
    this.assessmentDimensions = [
      { name: '职业认知' },
      { name: '专业能力' },
      { name: '通用技能' },
      { name: '求职准备' },
      { name: '职业素养' },
      { name: '心理准备' }
    ];
    
    return {
      overallScore: 85,
      overallRating: '良好',
      dimensions: this.assessmentDimensions.map(dim => ({
        name: dim.name,
        score: Math.floor(Math.random() * 20) + 75, // 75-95之间的随机分数
        rating: this.getRating(Math.floor(Math.random() * 20) + 75),
        feedback: this.generateMockFeedback(dim.name)
      })),
      summary: '这是一份模拟的评估报告摘要。根据您的回答，我们对您的就业成熟度进行了全面评估。您的就业成熟度处于良好水平，具备了基本的就业竞争力。在职业认知和通用技能方面表现较好，但在求职准备方面还有较大提升空间。',
      recommendations: [
        '继续积累相关实习经验',
        '加强专业技能学习',
        '提升沟通表达能力',
        '完善职业规划',
        '建立专业人脉网络'
      ],
      strengths: ['学习能力强', '态度积极', '基础知识扎实'],
      areasForImprovement: ['实践经验不足', '职业定位需要更明确']
    };
  }
}

// 创建并导出单例实例
const mockService = new MockAssessmentService();
export default mockService;